<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 服务器返回的数据  res = [ {xxx}, {xxx}, {xxx} ]
      //我们需要的数据 head = []  data = [[], [], []]
      // 思考如何将list中的数据转化为最终输出的结果？？？
      const list = [
        {
          correctionTime: '2018-11-30',
          departmentName: '总裁办',
          formOfEmployment: 1,
          id: '604f764971f93f3ac8f365c2',
          mobile: '13800000002',
          password: 'e10adc3949ba59abbe56e057f20f883e',
          staffPhoto: 'http://q6cu3t6jv.bkt.clouddn.com/1063705989926227968?t=1616204161907',
          timeOfEntry: '2018-11-02',
          username: '管理员',
          workNumber: '9002',
        },
        {
          correctionTime: '2018-11-20',
          departmentName: '市场部',
          formOfEmployment: 1,
          id: '604f764971f93f3ac8f365c3',
          mobile: '13800000003',
          password: 'e10adc3949ba59abbe56e057f20f883e',
          staffPhoto: 'http://q6cu3t6jv.bkt.clouddn.com/1063705989926227968?t=1616204161907',
          timeOfEntry: '2018-11-04',
          username: '孙财',
          workNumber: '111',
        },
      ];

      const hireType = [
        {
          id: 1,
          value: '正式',
        },
        {
          id: 2,
          value: '非正式',
        },
      ];

      function transformEnToZhCN(params) {
        // 1. 准备一个 英文-中文的映射表
        const map = {
          id: '编号',
          password: '密码',
          mobile: '手机号',
          username: '姓名',
          timeOfEntry: '入职日期',
          formOfEmployment: '聘用形式',
          correctionTime: '转正日期',
          workNumber: '工号',
          departmentName: '部门',
          staffPhoto: '头像地址',
          enableState: '账号状态',
        };
        // header就是后的表头
        let header = [];
        // data就是excel的数据
        let data = [];

        //获取我们数组里的第一个元素
        const one = params[0];
        // 对于获取的数据one 做一个兼容处理
        if (!one) {
          // 我们return只能返回一个值，如果外面需要多个值
          // 可以对象的形式返回
          return { header, data };
        }

        // ['correctionTime', 'departmentName', 'formOfEmployment', 'id', 'mobile', 'password', 'staffPhoto', 'timeOfEntry', 'username', 'workNumber']
        // 1. 准备头部header的数据
        // header = Object.keys(one).map((item) => {
        //   // 第一次循环， item = 'correctionTime'
        //   return map[item]
        // });
        // Object.keys(one) = ['correctionTime',  'workNumber', 'username', 'workNumber']
        header = Object.keys(one).map((item) => map[item]);
        //header = ['转正日期', '部门', '聘用形式', '编号', '手机号', '密码', '头像地址', '入职日期', '姓名', '工号']
        // console.log(header);

        // Object.values(item) -- 所有值的集合
        // params.map((item) => {
        //   console.log(Object.values(item));
        //   return Object.values(item)
        // });
        data = params.map((item) => {
          const key = item['formOfEmployment']; // key =1 或者2 数字
          const finditem = hireType.find((item) => item.id === key);
          if (finditem) {
            item['formOfEmployment'] = finditem.value;
          } else {
            item['formOfEmployment'] = '临时工';
          }
          return Object.values(item);
        });
        console.log(data);

        return { header: header, data: data };
      }

      transformEnToZhCN(list);
    </script>
  </body>
</html>
